package com.forum.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.forum.bean.Messages;
import com.forum.dto.ChatRecordDto;
import com.forum.dto.ConversationDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface MessageMapper extends BaseMapper<Messages> {
    /**
     * 查询与当前用户有关的所有会话，每个会话取最新的一条消息及对方用户的信息。
     * 逻辑：
     * - 查询条件：消息的发送方或接收方为 #{currentUserId}
     * - 通过 CASE 判断对方用户ID
     * - 分组后取每组中 create_at 最大（最新）的消息记录
     *
     * @param currentUserId 当前登录用户ID
     * @return 会话列表
     */
    List<ConversationDto> selectConversationList(@Param("currentUserId") Integer currentUserId);


    /**
     * 查询当前用户与目标用户之间所有聊天记录
     * 返回每个记录包含双方用户的简要信息（id、avatar）
     */
    List<ChatRecordDto> selectChatRecords(@Param("currentUserId") Integer currentUserId,
                                          @Param("targetUserId") Integer targetUserId);

}
